package com.java.module.chat.service;

import java.util.List;
import java.util.Map;

import com.java.common.lang.domain.entity.User;
import com.java.module.chat.domain.ChatMessage;
import com.java.module.chat.domain.Session;
import com.java.module.chat.domain.dto.SessionDTO;
import com.java.module.chat.domain.vo.ChatMessageVO;

/**
 * 聊天：会话列Service接口
 * 
 * @author Administrator
 * @date 2021-05-13
 */
public interface ISessionService {

    /**
     * 查询聊天：会话列
     * 
     * @param sessionId 聊天：会话列ID
     * @return 聊天：会话列
     */
    public Session selectSessionById(Long sessionId);

    /**
     * 查询聊天：会话列列表
     * 
     * @param session 聊天：会话列
     * @return 聊天：会话列集合
     */
    public List<Session> selectSessionList(SessionDTO session);

    /**
     * 查询单个聊天：会话列
     * 
     * @param session 聊天：会话列
     * @return 聊天：会话列
     */
    public Session selectSession(Session session);

    /**
     * 新增聊天：会话列
     * 
     * @param session 聊天：会话列
     * @return 结果
     */
    public int insertSession(Session session);

    /**
     * 修改聊天：会话列
     * 
     * @param session 聊天：会话列
     * @return 结果
     */
    public int updateSession(Session session);

    /**
     * 批量删除聊天：会话列
     * 
     * @param sessionIds 需要删除的聊天：会话列ID
     * @return 结果
     */
    public int deleteSessionByIds(Long[] sessionIds);

    /**
     * 删除聊天：会话列信息
     * 
     * @param sessionId 聊天：会话列ID
     * @return 结果
     */
    public int deleteSessionById(Long sessionId);

    /**
     * 会话列表
     * 
     * @param uid
     * @return
     */
    public List<Session> getSessionList(Long uid,ChatMessage body);


    /**
     * 查询福安刚客服信息
     * */
    Session getAdminSession(Long loginUserId);


    /**
     * 获取用户信息
     * 
     * @param uid
     * @param type
     * @return
     */
    public Map<String, String> getUserInfo(Long uid, Integer type);

    /**
     * 查询群聊的西悉尼
     * @param gid
     * @param type
     * @param loginUid
     * @return
     */
    public Map<String, String> getGroupInfo(Long gid, Integer type,Long loginUid);
    /**
     * 获取用户信息
     * 
     * @param messageVO
     */
    public void getUserInfo(ChatMessageVO messageVO);

    /**
     * 获取用户昵称
     * 
     * @param user
     * @return String
     */
    public String getUserNickname(User user);

    /**
     * 刷新消息
     * 
     * @param msgFromUid
     * @param msgToUid
     * @param chatType
     * @param userType
     * @param message
     * @param unreadMsgCount
     */
    public void refreshSession(Long msgFromUid, Long msgToUid, Integer chatType, Integer type, Integer userType, ChatMessage message,
            Integer unreadMsgCount,Integer sessionType);

    /**
     * 查询客服未读消息数量
     * 
     * @param uid
     * @return 结果
     */
    public int getUnreadMsgCount(Long uid);

    /**
     * 查询客服未读消息数量
     * 
     * @param uid
     * @return 结果
     */
    public Session getUnreadMsg(Long uid);

    /**
     * 重置未读消息数量
     * 
     * @author yilabao
     * @date 2021年10月12日
     * @param session
     * @return int
     */
    public int updateSessionMsgRead(Session session);

    /**
     * 查询用户未读消息数量
     * 
     * @author yilabao
     * @date 2022年1月8日
     * @param uid
     * @return Long
     */
    public Integer getUserUnreadCount(Long uid);

    /**
     * 增加会话记录
     * @param otherSideUid 活动id
     * @param sessionType 类型
     * @param uid 登录用户
     * @return
     */
    boolean addSession(Long otherSideUid, Integer sessionType,Long uid,Integer type);
}